<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Installation and compatibility</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.Log v2">
<link rel="up" href="../index.html" title="Chapter 1. Boost.Log v2">
<link rel="prev" href="how_to_read.html" title="How to read the documentation">
<link rel="next" href="installation/config.html" title="Configuring and building the library">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="how_to_read.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="installation/config.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="log.installation"></a><a class="link" href="installation.html" title="Installation and compatibility">Installation and compatibility</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="installation.html#log.installation.supported_compilers">Supported compilers
      and platforms</a></span></dt>
<dt><span class="section"><a href="installation/config.html">Configuring and building the
      library</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="log.installation.supported_compilers"></a><a class="link" href="installation.html#log.installation.supported_compilers" title="Supported compilers and platforms">Supported compilers
      and platforms</a>
</h3></div></div></div>
<p>
        The library should build and work with a reasonably compliant compiler. The
        library was successfully built and tested on the following platforms:
      </p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
            Windows XP, Windows Vista, Windows 7. MSVC 8.0 SP1, MSVC 9.0 and newer.
          </li>
<li class="listitem">
            Linux. GCC 4.5 and newer. Older versions may work too, but it was not
            tested.
          </li>
<li class="listitem">
            Linux. Intel C++ 13.1.0.146 Build 20130121.
          </li>
<li class="listitem">
            Linux. Clang 3.2 and newer.
          </li>
</ul></div>
<p>
        The following compilers/platforms are not supported and will likely fail
        to compile the library:
      </p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
            C++11 compilers with non-C++11 standard libraries (like Clang with libstdc++
            from GCC 4.2). Please, use a C++11 standard library in C++11 mode.
          </li>
<li class="listitem">
            MSVC 8.0 (without SP1) and older.
          </li>
<li class="listitem">
            GCC 4.2 and older.
          </li>
<li class="listitem">
            Borland C++ 5.5.1 (free version). Newer versions might or might not work.
          </li>
<li class="listitem">
            Solaris Studio 12.3 and older.
          </li>
<li class="listitem">
            Windows 9x, ME, NT4, 2000 and older are not supported.
          </li>
</ul></div>
<p>
        Boost.Log should be compatible with all hardware architectures supported
        by Boost. However, in case of 32 bit x86 architecture the library requires
        at least i586 class CPU to run.
      </p>
<h5>
<a name="log.installation.supported_compilers.h0"></a>
        <span class="phrase"><a name="log.installation.supported_compilers.notes_for_gcc_users"></a></span><a class="link" href="installation.html#log.installation.supported_compilers.notes_for_gcc_users">Notes
        for GCC users</a>
      </h5>
<p>
        GCC versions since 4.5 support link time optimization (LTO), when most of
        optimizations and binary code generation happen at linking stage. This allows
        to perform more advanced optimizations and produce faster code. Unfortunately,
        it does not play well with projects containing source files that need to
        be compiled with different compiler options. Boost.Log is one of such projects,
        some parts of its sources contain optimizations for modern CPUs and will
        not run on older CPUs. Enabling LTO for Boost.Log will produce binaries incompatible
        with older CPUs (GCC bugs <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61043" target="_top">61043</a>,
        <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77845" target="_top">77845</a>),
        which will likely result in crashes at run time. For this reason LTO is not
        supported in Boost.Log.
      </p>
<p>
        There is a GCC <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60607" target="_top">bug</a>
        which may cause compilation failures when <code class="computeroutput"><span class="special">-</span><span class="identifier">march</span><span class="special">=</span><span class="identifier">native</span></code> command line argument is used. It
        is recommended to avoid using <code class="computeroutput"><span class="special">-</span><span class="identifier">march</span><span class="special">=</span><span class="identifier">native</span></code> argument (or <code class="computeroutput"><span class="identifier">instruction</span><span class="special">-</span><span class="identifier">set</span><span class="special">=</span><span class="identifier">native</span></code> bjam property) and instead explicitly
        specify the target CPU (e.g. <code class="computeroutput"><span class="identifier">instruction</span><span class="special">-</span><span class="identifier">set</span><span class="special">=</span><span class="identifier">sandy</span><span class="special">-</span><span class="identifier">bridge</span></code>).
      </p>
<h5>
<a name="log.installation.supported_compilers.h1"></a>
        <span class="phrase"><a name="log.installation.supported_compilers.notes_for_mingw__cygwin_and_visual_studio_express_edition_users"></a></span><a class="link" href="installation.html#log.installation.supported_compilers.notes_for_mingw__cygwin_and_visual_studio_express_edition_users">Notes
        for MinGW, Cygwin and Visual Studio Express Edition users</a>
      </h5>
<p>
        In order to compile the library with these compilers special preparations
        are needed. First, in case of MinGW or Cygwin make sure you have installed
        the latest GCC version. The library will most likely fail to compile with
        GCC 3.x.
      </p>
<p>
        Second, at some point the library will require a Message Compiler tool (<code class="computeroutput"><span class="identifier">mc</span><span class="special">.</span><span class="identifier">exe</span></code>),
        which is not available in MinGW, Cygwin and some versions of MSVC Express
        Edition. Typically the library build scripts will automatically detect if
        message compiler is present on the system and disable Event log related portion
        of the library if it's not. If Event log support is required and it is not
        found on the system, you have three options to settle the problem. The recommended
        solution is to obtain the original <code class="computeroutput"><span class="identifier">mc</span><span class="special">.</span><span class="identifier">exe</span></code>. This
        tool is available in Windows SDK, which can be downloaded from the Microsoft
        site freely (for example, <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=71deb800-c591-4f97-a900-bea146e4fae1&amp;displaylang=en" target="_top">here</a>).
        Also, this tool should be available in Visual Studio 2010 Express Edition.
        During the compilation, <code class="computeroutput"><span class="identifier">mc</span><span class="special">.</span><span class="identifier">exe</span></code> should
        be accessible through one of the directories in your <code class="computeroutput"><span class="identifier">PATH</span></code>
        environment variable.
      </p>
<p>
        Another way is to attempt to use the <code class="computeroutput"><span class="identifier">windmc</span><span class="special">.</span><span class="identifier">exe</span></code> tool
        distributed with MinGW and Cygwin, which is the analogue of the original
        <code class="computeroutput"><span class="identifier">mc</span><span class="special">.</span><span class="identifier">exe</span></code>. In order to do that you will have
        to patch Boost.Build files (in particular, the <code class="computeroutput"><span class="identifier">tools</span><span class="special">/</span><span class="identifier">build</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">mc</span><span class="special">.</span><span class="identifier">jam</span></code> file) as described in <a href="https://svn.boost.org/trac/boost/ticket/4111" target="_top">this</a>
        ticket. After that you will be able to specify the <code class="computeroutput"><span class="identifier">mc</span><span class="special">-</span><span class="identifier">compiler</span><span class="special">=</span><span class="identifier">windmc</span></code>
        option to bjam to build the library.
      </p>
<p>
        In case if message compiler detection fails for some reason, you can explicitly
        disable support for event log backend by defining the <code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_EVENT_LOG</span></code>
        configuration macro when building the library. This will remove the need
        for the message compiler. See <a class="link" href="installation/config.html" title="Configuring and building the library">this
        section</a> for more configuration options.
      </p>
<p>
        MinGW users on Windows XP may be affected by the <a href="http://sourceforge.net/p/mingw-w64/bugs/307/" target="_top">bug</a>
        in msvcrt.dll that is bundled with the operating system. The bug manifests
        itself as crashes while the library formats log records. This problem is
        not specific to Boost.Log and may also show in different contexts related
        to locale and IO-streams management.
      </p>
<h5>
<a name="log.installation.supported_compilers.h2"></a>
        <span class="phrase"><a name="log.installation.supported_compilers.additional_notes_for_cygwin_users"></a></span><a class="link" href="installation.html#log.installation.supported_compilers.additional_notes_for_cygwin_users">Additional
        notes for Cygwin users</a>
      </h5>
<p>
        Cygwin support is very preliminary. The default GCC version available in
        Cygwin (4.5.3 as of this writing) is unable to compile the library because
        of compiler errors. You will have to build a newer GCC from sources. Even
        then some Boost.Log functionality is not available. In particular, the socket-based
        syslog backend is not supported, as it is based on <a href="http://www.boost.org/doc/libs/release/doc/html/boost_asio.html" target="_top">Boost.ASIO</a>,
        which doesn't compile on this platform. However, the native syslog support
        is still in place.
      </p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2007-2021 Andrey Semashev<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>).
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="how_to_read.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="installation/config.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
